/*
 *
 * 名称：干十
 * 功能：十天干、生长状态等逻辑
 * 作者：清河张
 * 时间：2025.05.12
 *
 */

#ifndef GAN10_H
#define GAN10_H

#include "zhouqi.h"
#include "wuxing.h"
#include "yy.h"

//天干十二态

class ZHSH_T : public CT
{
public:
    enum EZHSH
    {
        ZHSH, YU, GUAN,
        LIN, WANG, SHUAI,
        BING, SI, MU,
        JUE, TAI, YANG,
    };
    //默认构造函数
    ZHSH_T();
    //全参数构造函数，默认属性配置
    ZHSH_T(int,const char*);

private:

};

typedef ZHOUQI<ZHSH_T,12> ZHSH12;


class GAN_T : public CT
{
public:
    enum EGAN
    {
        JIAA,    YIII,    BING,    DING,    WUUU,
        JIII,    GENG,    XINN,    RENN,    GUII,
        G___ = INVALIDID
    };

    //默认构造函数
    GAN_T();
    //全参数构造函数，默认属性配置
    GAN_T(int id, int zs, const char* name);

    int iyy() const;//阴阳，整数版
    YY yy() const;//阴阳，对象版
    YY ts() const;//太少
    ZHSH12 nengliang() const;//能量
    int yu(int);//遇到某地支的能量状态

protected:
    struct{
        int _zs:6;//长生
        int _nl:6;//能量
        int _resv:20;
    };

private:


};

class GAN10 : public ZHOUQI<GAN_T,10>
{
public:
    //默认构造函数
    GAN10();
    //初始化到指定对象
    GAN10(int id);
    //使用父类初始化
    GAN10(const ZHOUQI<GAN_T,10>& gt);
    //运算
    GAN10& operator = (const ZHOUQI<GAN_T,10>& gt);
    GAN10& operator = (int id);

    GAN10 chong() const;//相冲
    GAN10 ke() const;//克

    WUXING5 he5(GAN10* g = nullptr) const;//五合
    WUXING5 wx5() const;//五行

    static const char* gky(GAN10 t, GAN10 d);//天干克应
private:
    static const char* _gky[10][10];//天干克应表
};




#endif // GAN10_H
